Zruseni komponent komponentou
Otázka od: Jiri Cincura
15. 7. 2004 19:38
Ahoj,
mam na formulari (napr.) 3 Buttony. Po kliknuti na nejaky z nich zavolam
proceduru, ktera vsechny komponenty znici.
Asi takto:
procedure ButtonClick(Sender: TObject);
begin
ZnicVse; //uvolni vsechny komponenty
end;
Coz samozrejme vyvola chybu, pac se znici i ten Button a neni se kam vratit.
Ptam se, je mozne nejak udelat, aby toto slo?
Zatim to resim tak, ze mam thread, kde mam jen:
procedure Execute;
begin
Synchronize(ZnicVse);
end;
ale pripada mi to dost divne.
--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net
Odpovedá: tondrej@t-online.de
15. 7. 2004 20:03
Zdar,
> mam na formulari (napr.) 3 Buttony. Po kliknuti na nejaky z nich zavolam
> proceduru, ktera vsechny komponenty znici.
> Asi takto:
>
> procedure ButtonClick(Sender: TObject);
> begin
> ZnicVse; //uvolni vsechny komponenty
> end;
>
> Coz samozrejme vyvola chybu, pac se znici i ten Button a neni se kam vratit.
>
> Ptam se, je mozne nejak udelat, aby toto slo?
Je to problem, pretoze metoda Click je volana v kontexte spracovania spravy.
Da sa to tiez riesit tak, ze z OnClick si posles na formular vlastnu
spravu (WM_USER + n) a az v jej spracovani potom zavolas metodu ZnicVse.
HTH
TOndrej
Odpovedá: Jiri Cincura
15. 7. 2004 21:03
tondrej@t-online.de wrote:
> Je to problem, pretoze metoda Click je volana v kontexte spracovania
> spravy.
> Da sa to tiez riesit tak, ze z OnClick si posles na formular vlastnu
> spravu (WM_USER + n) a az v jej spracovani potom zavolas metodu
> ZnicVse.
No to me taky napadlo. Ale preci jen jsem doufal v nejake "systemovejsi"
reseni.
--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net
Odpovedá: Milan Tomes
16. 7. 2004 6:25
Mam takovy pocit, ze pokud se podivas do archivu, tak toto reseni
doporucoval i sam pan velky v soucasnosti znamy pod prezdivkou Petr Vones
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Jiri Cincura
> Sent: Thursday, July 15, 2004 9:49 PM
>
> tondrej@t-online.de wrote:
> > Je to problem, pretoze metoda Click je volana v kontexte spracovania
> > spravy.
> > Da sa to tiez riesit tak, ze z OnClick si posles na formular vlastnu
> > spravu (WM_USER + n) a az v jej spracovani potom zavolas metodu
> > ZnicVse.
>
> No to me taky napadlo. Ale preci jen jsem doufal v nejake "systemovejsi"
> reseni.
Odpovedá: Jiri Cincura
16. 7. 2004 9:57
Milan Tomes wrote:
> Mam takovy pocit, ze pokud se podivas do archivu, tak toto reseni
> doporucoval i sam pan velky v soucasnosti znamy pod prezdivkou Petr
> Vones
Kdyz problem je v tom, ze ta app je CLX. Tam se to reseni pres side thread
zda lepsi.
--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net
Odpovedá: Petr Fejfar
16. 7. 2004 10:58
Jiri Cincura wrote:
> Kdyz problem je v tom, ze ta app je CLX. Tam se to reseni pres side
> thread zda lepsi.
Jestli se nepletu, tak jsi hledal nejake "systemovejsi" reseni
a takovym resenim je pozadat vlastnika instance, aby ji zrusil
a ne se mu plest do kompetenci nejakym threadem
pf
Odpovedá: Pavel Poles
16. 7. 2004 11:06
> Kdyz problem je v tom, ze ta app je CLX. Tam se to reseni pres side thread
> zda lepsi.
v CLX to jde treba takhle:
procedure TMyComponent.Release;
begin
if not (csDestroying in ComponentState) then
QApplication_PostEvent( Application.Handle, QCustomEvent_create(
QEventType_CMRelease, Self ));
end;
Pavel Poles
Odpovedá: Jiri Cincura
16. 7. 2004 20:49
Pavel Poles wrote:
>> Kdyz problem je v tom, ze ta app je CLX. Tam se to reseni pres side
>> thread zda lepsi.
>
> v CLX to jde treba takhle:
>
> procedure TMyComponent.Release;
> begin
> if not (csDestroying in ComponentState) then
> QApplication_PostEvent( Application.Handle, QCustomEvent_create(
> QEventType_CMRelease, Self ));
> end;
Tak tohle je naprosto skvele! Jeste pro nekoho dodam, ze do uses dat Qt.
--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net